//package com.fy.xxl.client;
//
//import com.alibaba.fastjson.JSONObject;
//import com.fy.ex.runtime.XxlJobOperationError;
//import com.fy.pojo.entity.XxlJobInfo;
//import com.fy.xxl.config.XxlJobClientConfig;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.http.HttpEntity;
//import org.springframework.http.HttpHeaders;
//import org.springframework.http.MediaType;
//import org.springframework.http.ResponseEntity;
//import org.springframework.stereotype.Component;
//import org.springframework.web.client.RestTemplate;
//
//@Slf4j
//@Component
//public class XxlJobClient {
//
//    @Autowired
//    private XxlJobClientConfig xxlJobClientConfig;
//
//    @Autowired
//    private RestTemplate restTemplate;
//
//    public Boolean stopAndRemoveJob(Long jobId) {
//        XxlJobInfo xxlJobInfo = new XxlJobInfo();
//        xxlJobInfo.setId(jobId.intValue());
//
//        HttpHeaders headers = new HttpHeaders();
//        headers.setContentType(MediaType.APPLICATION_JSON);
//        HttpEntity<XxlJobInfo> request = new HttpEntity<>(xxlJobInfo, headers);
//
//        String url = xxlJobClientConfig.getStopJobUrl();
//        ResponseEntity<JSONObject> response = restTemplate.postForEntity(url, request, JSONObject.class);
//        if(response.getStatusCode().value() == 200 && response.getBody().getIntValue("code") == 200) {
//            log.info("停止xxl执行任务成功:{},返回信息:{}", jobId, response.getBody().toJSONString());
//
//            String url2 = xxlJobClientConfig.getRemoveUrl();
//            ResponseEntity<JSONObject> response2 = restTemplate.postForEntity(url2, request, JSONObject.class);
//            if(response2.getStatusCode().value() == 200 && response2.getBody().getIntValue("code") == 200) {
//                log.info("删除xxl执行任务成功:{},返回信息:{}", jobId, response2.getBody().toJSONString());
//                return true;
//            }else {
//                log.info("停止xxl执行任务失败:{},返回信息:{}", jobId, response2.getBody().toJSONString());
//                throw new XxlJobOperationError("任务停止失败");
//            }
//        }else {
//            log.info("停止xxl执行任务失败:{},返回信息:{}", jobId, response.getBody().toJSONString());
//            throw new XxlJobOperationError("任务移除失败");
//        }
//    }
//
//    public Long addAndStart(String executorHandler, String param, String corn, String desc) {
//        log.info(executorHandler,param,corn,desc);
//        XxlJobInfo xxlJobInfo = new XxlJobInfo();
//        xxlJobInfo.setJobGroup(xxlJobClientConfig.getJobGroupId());
//        xxlJobInfo.setJobDesc(desc);
//        xxlJobInfo.setAuthor("fy");
//        xxlJobInfo.setScheduleType("CRON");
//        xxlJobInfo.setScheduleConf(corn);
//        xxlJobInfo.setGlueType("BEAN");
//        xxlJobInfo.setExecutorHandler(executorHandler);
//        xxlJobInfo.setExecutorParam(param);
//        xxlJobInfo.setExecutorRouteStrategy("FIRST");
//        xxlJobInfo.setExecutorBlockStrategy("SERIAL_EXECUTION");
//        xxlJobInfo.setMisfireStrategy("FIRE_ONCE_NOW");
//        xxlJobInfo.setExecutorTimeout(0);
//        xxlJobInfo.setExecutorFailRetryCount(0);
//
//        HttpHeaders headers = new HttpHeaders();
//        headers.setContentType(MediaType.APPLICATION_JSON);
//        HttpEntity<XxlJobInfo> request = new HttpEntity<>(xxlJobInfo, headers);
//
//        String url = xxlJobClientConfig.getAddAndStartUrl();
//        ResponseEntity<JSONObject> response = restTemplate.postForEntity(url, request, JSONObject.class);
//        if(response.getStatusCode().value() == 200 && response.getBody().getIntValue("code") == 200) {
//            log.info("增加并开始执行xxl任务成功,返回信息:{}", response.getBody().toJSONString());
//            //content为任务id
//            return response.getBody().getLong("content");
//        }
//        log.info("增加并开始执行xxl任务失败:{}", response.getBody().toJSONString());
//        throw new XxlJobOperationError("任务执行失败");
//    }
//}
